<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 查看网站ip
    // win + r => 运行 =>  cmd

    // URL: 统一资源定位符
    // https://www.baidu.com:443/index.html?a=1&b=2&c3#one


    // 协议: http  https

    // 域名: www.baidu.com
    // www  => 万维网

    // baidu => 命名名称
    // baidu  一级域名
    // map.baidu 二级域名
    // a.map.baidu  三级域名

    // com   => 域名后缀  (国别域名 .cn .us  国际域名 .com )

    // 端口:
    // 80(访问超文本服务器 http 默认80 => 可以改 5500 )
    // 443(访问超文本服务器 https 默认443 => 可以改)


    // 文件路径
    // 通过域名可以访问站点的根目录   /
    // /index.html


    // 参数数据队列:  位于?之后 #之前 => 页面携带数据(get)
    // ?a=1&b=2&c3

    // hash值(锚点):
    // #one




    // HTTP之请求消息Request
    // 客户端发送一个HTTP请求到服务器的请求消息包括以下格式：

    // 1 请求行（request line）用来说明请求类型等

    // 2 请求头部（header）用来说明服务器要使用的附加信息

    // 3 空行

    // 4 请求数据(请求时携带的数据)   get=> (queryString)   post=>(Form Data)

    // a. 以get方式传递数据时,将参数数据队列拼接在地址栏之后,用 ? 分隔

    // b.以post方式传递数据时,利用http post传输机制,将数据放在请求主体(header)中传递,地址栏看不到


    // ## HTTP之响应消息Response

    // 一般情况下，服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。

    // HTTP响应也由四个部分组成，分别是：

    // - 状态行
    //     - 响应头部
    //     - 空行
    //     - 响应正文(服务端返回的响应数据  responseText)


    // HTTP工作原理
    // HTTP协议定义Web客户端如何从Web服务器请求Web页面，以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文，请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应，响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

    /*
    步骤:  在地址栏中输入url地址 浏览器做了什么操作
    1. DNS解析(域名解析)    通过DNS解析域名 => 找到服务器ip地址
    2. 客户端连接到Web服务器  => 建立TCP链接 (TCP建立链接 => 三次握手)
        > 一个HTTP客户端，通常是浏览器，与Web服务器的HTTP端口（默认为80）建立一个TCP套接字连接。例如访问 http://www.abc.com。
    3. 发送请求
        > 通过TCP套接字，客户端向Web服务器发送一个文本的请求报文，一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
    4. 服务器接受请求并返回HTTP响应
        > Web服务器解析请求，定位请求资源。服务器将资源复本写到TCP套接字，由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成
    5. 客户端接收想要数据之后,释放连接TCP连接 (断开链接 => 四次挥手)
        > 若connection 模式为close，则服务器主动关闭TCP连接，客户端被动关闭连接，释放TCP连接;若connection 模式为keepalive，则该连接会保持一段时间，在该时间内可以继续接收请求;
    6. 客户端浏览器解析HTML内容
        > 客户端浏览器首先解析状态行，查看表明请求是否成功的状态代码。然后解析每一个响应头，响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML，根据HTML的语法对其进行格式化，并在浏览器窗口中显示
    
    */

    // 建立链接 和 断开链接 

    // TCP三次握手
    // 客户端必须确定: 
    //     1. 自己能正常发送消息
    //     2. 自己能正常接收消息
    //     3. 服务器能正常发送消息  
    //     4. 服务器能正常接收消息  

    // 服务器必须确定: 
    //     1. 自己能正常发送消息
    //     2. 自己能正常接收消息
    //     3. 客户端能正常发送消息  
    //     4. 客户端能正常接收消息 

    // 客户端和服务器都要确定自己和对方是否能正常的接收和发送消息



    // TCP四次挥手





    // http是什么?
    // http的请求和响应相关的信息
    // http的工作原理
    // http三次握手和四次挥手
    // url的组成 =>相关的概念

</script>

</html>